package cn.com.dhc.danlu.util;

import java.math.BigDecimal;

/**
 * User: Geek_Soledad(wuhaiyang@danlu.com)
 * Date: 2016-06-16
 * Time: 15:58
 * Description: .....
 */
public class CalculatePriceUtil {
    public static BigDecimal addition(String str1, String str2) {
        BigDecimal bd1 = new BigDecimal(str1);
        BigDecimal bd2 = new BigDecimal(str2);

        return bd1.add(bd2);
    }

    public static BigDecimal subtraction(String str1, String str2) {
        BigDecimal bd1 = new BigDecimal(str1);
        BigDecimal bd2 = new BigDecimal(str2);

        return bd1.subtract(bd2);
    }

    public static BigDecimal multiplication(String str1, String str2) {
        BigDecimal bd1 = new BigDecimal(str1);
        BigDecimal bd2 = new BigDecimal(str2);

        return bd1.multiply(bd2);
    }

    public static BigDecimal divide(String str1, String str2) {
        BigDecimal bigDecimal = new BigDecimal(str1);
        BigDecimal bigDecimal2 = new BigDecimal(str2);
        return bigDecimal.divide(bigDecimal2);
    }

    /**
     * 保留两位小数
     */
    public static String roungDown(BigDecimal bd) {
        return bd.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString();
    }

    /**
     * //       > -->   1
     * //       < -->   -1
     * //      == -->   0
     * 比较大小
     */
    public static int compare(String str1, String str2) {
        BigDecimal bd1 = new BigDecimal(str1);
        BigDecimal bd2 = new BigDecimal(str2);
        return bd1.compareTo(bd2);
    }


    /**
     * 判断当前字符串是否是为整数
     */
    public static boolean isNumeric(String str) {
        for (int i = str.length(); --i >= 0; ) {
            int chr = str.charAt(i);
            if (chr < 48 || chr > 57) {
                return false;
            }
        }
        return true;
    }

    public static String intercept(String str) {
        String res = str;
        if (str.contains(".")) {
            res = (str.indexOf('.') == 0) ? "0" : str.substring(0, str.indexOf("."));
        }
        return res;
    }

    /**
     * 如果是整数据就直接返回
     * 10.0 - > 10
     * 10.0002-> 10.0002
     */
    public static String converseAmount(String str) {
        String res = str;
        if (str.contains(".")) {
            int start = str.indexOf(".") + 1;
            boolean isDecimal = false;
            while (start < str.length()) {
                String tmp = str.substring(start, start + 1);
                if (!tmp.equals("0")) {
                    isDecimal = true;
                    break;
                }
                start++;
            }
            if (!isDecimal) {
                res = str.substring(0, str.indexOf("."));
            }
        }
        return res;
    }
}